package cn.jx.asc.service;

import cn.jx.asc.pojo.bo.RegistUserBO;
import cn.jx.asc.pojo.bo.UserInfoBO;
import cn.jx.asc.pojo.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;


/**
 * @author lhg
 */
public interface UserService extends IService<User> {
    /**
     * 注册查询用户名是否已经存在
     * @param username 用户名
     * @return boolean
     */
     boolean queryUsernameIsExist(String username);

    /**
     * 注册查询用户名是否已经存在
     * @param userId 用户名
     * @return boolean
     */
    boolean queryUserIdIsExist(String userId);

    /**
     * 创建用户
     * @param registUserBO 用户BO
     * @return User
     */
     User createUser(RegistUserBO registUserBO);

    /**
     * 创建用户
     * @param registUserBO 用户BO
     * @return User
     */
    User addUser(RegistUserBO registUserBO);

    /**
     * 登入前查询
     * @param username 用户名
     * @param password 密码
     * @return User
     */
     User queryUserForLogin(String username,String password);


    /**
     * 查询所有用户信息
     * @param current 页码
     * @param size 条数
     * @return UserInfoBO 用户信息BO
     */
    UserInfoBO queryAllUsers(long current, long size);

    /**
     * 通过用户id修改密码
     * @param userId 用户id
     * @param password 密码
     * @return Boolean
     */
    Boolean modifyPasswordById( String userId , String password);

    /**
     * 通过用户id修改密码
     * @param userId 用户id
     * @param userStatus 用户状态
     * @return Boolean
     */
    Boolean modifyUserStatusById( String userId , Integer userStatus);


    /**
     * 通过用户id删除用户
     * @param userId 用户id
     * @return Boolean
     */
    Boolean deleteUserById(String userId);


    /**
     * 通过id查询用户详细信息
     * @param userId 用户id
     * @return User 用户对象
     */
    User queryUserById(String userId);

    /**
     * 通过id查询用户详细信息
     * @param username 用户名
     * @return User 用户对象
     */
    User queryUserByName(String username);

    /**
     *  通过所有注册状态的用户
     * @param current 页码
     * @param size 条数
     * @return UserInfoBO 用户信息BO
     */
    UserInfoBO queryRegisterUser(long current, long size);


}
